---
title: 常见问题
description: 下面是关于 Ultracite 的一些常见问题解答。
---

## 问：Ultracite 到底是什么 —— 它与 Biome 或 ESLint 有何不同？

Ultracite 本质上是建立在 Biome 之上的预设配置。可以把 Ultracite 看作一组经过挑选的规则和设置的打包，而 Biome 则是实际负责格式化/lint 的引擎。你可以单独使用 Biome，但那样你需要自己决定启用哪些规则并手动配置其选项。Ultracite 帮你省去这些工作，提供了一个开箱即可使用的设置，采用来自生态系统的最佳实践。

与 ESLint + Prettier 相比，Biome 由于其 Rust 实现和统一化（一个工具而不是两个或三个）通常更快。如果你已经喜欢逐条调整每个 ESLint 规则，Ultracite 可能会让你感觉受限；但它的目标是消除这种需要并采用合理的默认值。

简而言之：Biome 是引擎（linter / formatter），Ultracite 是配置。

## 问：如果我使用 Ultracite，是否仍然需要 ESLint 或 Prettier？

不需要 —— Ultracite（通过 Biome）替代了 ESLint 和 Prettier 在你的 JavaScript / TypeScript 代码上的功能。你完全不需要运行 ESLint 或 Prettier。事实上，建议移除那些配置以避免冲突。Ultracite 的输出会涵盖这些工具大部分的格式化和 lint 功能，通常规则等同或更严格。

唯一可能仍会使用它们的情况是如果你依赖某个 Biome 不支持的极端插件（例如，非常专门化的 ESLint 规则）。但理想情况下，你会完全在 Ultracite 的生态中工作。

## 问：我的非 JS/TS 文件怎么办？Ultracite 会处理这些吗？

Ultracite 通过 Biome 为 JavaScript、TypeScript、JSX、CSS 和 GraphQL 提供不同程度的 lint 和格式化支持。

## 问：Ultracite 多久更新一次？

Ultracite 会根据需要更新，通常会跟随 Biome 的发布周期。由于 Biome 仍在发展，你可能会看到较频繁的小版本发布到 Ultracite。这些更新可能带来新规则、bug 修复或默认值调整。鉴于它是通过 `-E` 固定的，你不会收到意外的更新，除非你选择升级。

建议关注 Ultracite 仓库的发布或查看 [发布记录](https://github.com/haydenbleasel/ultracite/releases) 页面。更新 Ultracite 时请阅读发行说明 —— 偶尔会启用一条新规则，可能会在你的项目中产生新的警告（这对于捕获问题是有益的，但需要提前知晓）。通过包管理器同时升级 Biome 和 Ultracite 通常是直接可行的。

## 问：如果我不同意 Ultracite 强制执行的某条规则，我应该怎么办？

你有几个选项：

- 在你的 `biome.jsonc` 中将其关闭或设置为不同的级别（对你的项目的快速修复）。
- 在 GitHub 仓库上开启一个[讨论](https://github.com/haydenbleasel/ultracite/discussions/)，如果该规则应对所有人进行调整。也许维护者会同意它过于严格或可以作为可选项。
- 如果这是一个风格问题，请记住 Ultracite 的目标是遵循“约定优于配置”——有时候为了项目之间的一致性，适应工具的风格是值得的。当然，你项目的需求优先。

归根结底，你控制着项目的 lint 配置。Ultracite 是一个起点；可以随意调整，但最好是小范围的修改。如果你发现自己关闭了大部分规则，那么 Ultracite 可能并不适合你们团队的偏好（尽管这种情况不常见）。

在那种情况下，你可以从头构建自己的 Biome 配置，但你会失去很多便利。通常只需几个调整就能让 Ultracite 很好地适配。

## 问：我可以在不使用 VS Code / Cursor / Windsurf 的情况下使用 Ultracite 吗？

可以 —— 我们重点关注 VS Code 及其分支，因为它们是现代 web 开发中最受欢迎的 IDE，但 Biome 可以纯粹通过 CLI 或与其他 IDE 一起使用。

查看 Biome 的[第一方](https://biomejs.dev/guides/editors/first-party-extensions/)和[第三方](https://biomejs.dev/guides/editors/third-party-extensions/) 编辑器集成以了解更多信息。

## 问：我如何知道 Ultracite 强制执行了哪些规则？有没有列表？

有，查看 GitHub 仓库中的 [biome.jsonc 文件](https://github.com/haydenbleasel/ultracite/blob/main/biome.jsonc) 以获取启用的规则列表。

## 问：Ultracite 能修复它发现的所有问题吗？

不能全部，但很多问题可以。Ultracite 会自动修复那些安全且确定性可修复的问题。这些包括格式化问题和许多 lint 错误（尤其是风格相关或简单的代码转换，例如移除未使用的导入、添加缺失的括号、将 `==` 改为 `===` 等）。

更复杂的问题（业务逻辑或需要开发者意图的改动）会留给你手动修复。例如，它不会神奇地重命名变量以符合命名约定或添加缺失的错误处理代码 —— 它只会给出警告。

其哲学类似于 ESLint 的：在可能的情况下提供修复，但不冒险改变代码行为。在自动修复后，请始终查看问题面板或 CLI 输出以确认剩余的警告。

## 问：我在哪里可以了解更多关于 Biome（Ultracite 使用的工具）的信息？

[Biome](https://biomejs.dev/) 有自己的网站和文档，你可以在那里找到更多技术细节。如果你想了解它如何格式化代码或某些选择背后的理念，Biome 文档是最佳资源。

此外，还有关于 Biome 作为 Rome 继任者崛起的博客文章和社区文章。理解 Biome 有助于你更好地理解 Ultracite 的能力。不过，你不需要深入学习 Biome 就能有效使用 Ultracite —— Ultracite 的目标就是为大多数用户抽象出这些细节。

## 问：我如何为特定项目或文件禁用 Ultracite？

如果你有一个暂时不想使用 Ultracite 的项目，你可以简单地在 `biome.jsonc` 中不包含 `extends: ["ultracite/core"]`（或移除该配置文件）。如果安装了 VS Code 扩展，它仍可能尝试使用 Biome 的默认设置在保存时格式化。

要完全禁用，你可以在该工作区关闭 `formatOnSave` 或卸载该工作区的 Biome 扩展。对于特定文件，如前所述，可以使用忽略注释或模式。基本上，Ultracite 是按项目通过配置进行选择性启用的。如果未配置，它就不会运行（Biome 本身在被触发时可能仍会运行格式化，但不会运行 lint 规则）。

## 问：在安装过程中我遇到了 corepack 错误 —— 我该怎么办？

一些用户在使用 corepack 运行 `pnpm dlx ultracite init` 时遇到签名验证错误，尤其是在 Node.js v22 且 corepack 版本较旧的情况下。该错误通常看起来像在包安装过程中出现 "Cannot find matching keyid"。

以下是推荐的解决方案：

- **更新 corepack**：升级到 corepack 0.34.0 或更高版本。你可以使用 `corepack prepare pnpm@latest --activate` 来完成，或按照 [pnpm corepack setup guide](https://pnpm.io/installation#using-corepack) 的说明操作。
- **更新 Node.js**：如果你在使用 Node.js v20.x，考虑升级到 v22 或更高版本，这些版本包含了更近期的 corepack。
- **改用 npx**：如果 corepack 仍然出问题，你可以使用 `npx ultracite init` 来替代 `pnpm dlx ultracite init`。

如果这些方法都不奏效，请在 [Ultracite GitHub 仓库](https://github.com/haydenbleasel/ultracite/issues) 提交 issue，附上你的 Node.js 和 corepack 版本详情。

---

希望这些常见问题能澄清一些常见疑问。如果你有这里未涵盖的问题，欢迎通过项目的 GitHub 或社区渠道联系我们。Ultracite 的目标是让你的开发生活更轻松 —— 因此反馈和问题始终受欢迎，以帮助其不断改进！